World Driver Championship Butcher
What does it do?
WDC Butcher can be used to view, export, and import cars from/to a WDC ROM. It can also extract track data, and view track models. More track features may be added in future releases. There is also the option to extract any specific zlib data block from the ROM.
So, you can export car models to .obj files and replace cars with your own models from .obj files.
How does it work?
Drag and drop a WDC ROM onto the exe to load it. Once loaded you can enter commands directly into the shell, try h or --help for a list of available commands. If you view a car or track a new OpenGL window will open to display it.
- Use the mouse to look and w, a, s, d keys to move.
- Hold shift while moving to move faster.
- The p key toggles wireframe mode on and off.
- When viewing a car you can use the 1 & 2 keys to cycle through the car parts.
- When viewing a car part you can use the 3 & 4 keys to cycle through the different texture palettes.
- The Esc key closes the display window and returns you to the shell.
How do I make a new car?
While it is possible to create a car from scratch and successfully import it, you will run into far fewer problems if you instead export an existing car and modify it to your liking instead.
Things to be aware of when working with an exported .obj file:
- The numbers at the start of each model section's name (eg 00-17-) are vital to the import process, do not change them! So are the material names.
- You cannot add additional model sections. Cars 23, 24, 25, 26, 27 use all possible model sections so would be a good base to work from.
- The game doesn't use a z-buffer, so car parts are drawn in a specific order (based on the camera position I guess). This means for example, that the roof section will always be drawn on top of the window sections. Keep this in mind if you are moving pieces about or making very unusually shaped models. The Butcher's renderer does NOT emulate this behaviour.
- Textures should be 4 or 8-bit PNGs with 8 colours. You cannot add more colours or resize textures. You cannot add additional textures. The first colour in the palette will always be transparent (The function responsible is loaded into RAM at 0x30df8 for the NTSC ROM, if you're inclined to hack this).
- The "palxx" in a texture's name tells you which palette this texture uses, this cannot be changed. If you modify textures so that two with the same "palxx" actually have different palettes, when you import them the palette from the last one loaded will be used for both. If you want a specific palette to override other ones, check which texture is last to set that palette when you import (Butcher prints this) and apply the palette to that texture.
- The method the game uses for car reflections means pure white - or close to it - textures have pure black/primary-coloured reflections. Probably best avoided.
- On import the LoD models have their vertices snapped to the nearest non-LoD vertex as a form of compression, so they can't be wildly different in shape from the main model.
- You can use tris or quads for model parts, if there are any polygons with more than four vertices they won't be imported into the game.
- The "fake_wheels" model is unnecessary, not all cars have it.
- The wheel origin vertices are used to position the wheels on the car select screen, but in a race the wheel offsets from the car settings are used instead. God only knows why.
- When you import a car the weight and acceleration ratings shown in the UI will be updated but not the top speed or handling as these appear to be a function of multiple settings I haven't worked out yet.
- The light origin vertices determine where the car's light effects appear for night-time tracks.
- The models 02-00 to 09-00 appear to be unused wheels for the LoD models, not all cars have them and you can safely just delete these.
Car settings notes:
- unknown6 & 7 appear to be to do with front wheel suspension, and 8 & 9 the rear wheels'.
- unknown13 is to do with handling, the higher the number the slower the car turns.
The ROM doesn't work when I try to load it in an emulator!?
Make sure you have the right settings, the ROMs output by the Butcher are compatible with both real N64s and emulators. For PJ64, it's easiest if you copy the entry for WDC in Project64/Config/Project64.rdb, then change the checksum to match the new checksum of the ROM (the 8 bytes at 0x10), that way the right settings will be all selected for you.
Soo I could export the Falcon Interceptor, replace a starter car with it and totally smash the GT2 cups?
Correct, if you can actually handle the Falcon.